package com.fzl.spring_chatroom.service;

import com.fzl.spring_chatroom.model.dao.Friend;
import com.fzl.spring_chatroom.model.dao.MessageSession;
import com.fzl.spring_chatroom.model.dao.MessageSessionUserItem;
import com.fzl.spring_chatroom.model.dao.User;
import com.fzl.spring_chatroom.model.mapper.MessageMapper;
import com.fzl.spring_chatroom.model.mapper.MessageSessionMapper;
import com.fzl.spring_chatroom.model.response.MessageResponse;
import com.fzl.spring_chatroom.model.response.MessageSessionUserItemResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Slf4j
@Service
public class MessageSessionService {
    @Autowired
    private MessageSessionMapper messageSessionMapper;

    @Autowired
    private MessageMapper messageMapper;

    public List<MessageSession> getMessageSessionList(Integer userId) {
        List<MessageSession> messageSessionList = new ArrayList<>();
        if (userId == null) {
            return null;
        }
        List<Integer> sessionIdList = messageSessionMapper.getSessionIdBySessionId(userId);
        for (Integer sessionId : sessionIdList) {
            MessageSession messageSession = new MessageSession();
            messageSession.setSessionId(sessionId);
            List<Friend> friends = messageSessionMapper.getFriendsBySessionId(sessionId, userId);
            // 查询每个好友的头像
            for (Friend friend : friends) {
                // 这里假设friendId就是userId
                User user = messageSessionMapper.getUserById(friend.getFriendId());
                if (user != null) {
                    friend.setAvatar(user.getAvatar());
                } else {
                    friend.setAvatar("/avatar/default.png");
                }
            }
            messageSession.setFriends(friends);

            String lastMessage = messageMapper.getLastMessageBySessionId(sessionId);
            if (lastMessage == null) {
                messageSession.setLastMessage("");
            } else {
                messageSession.setLastMessage(lastMessage);
            }
            messageSessionList.add(messageSession);
        }
        return messageSessionList;
    }

    public MessageSessionUserItemResponse addMessageSession(Integer toUserId, Integer selfUserId) {

        MessageSessionUserItemResponse messageSessionUserItemResponse = new MessageSessionUserItemResponse();
        // 其实就是插入sessionId主键这一操作
        MessageSession messageSession = new MessageSession();
        messageSessionMapper.addMessageSession(messageSession);

        // 插入message_session_user插入属性,插入会话中的自己
        MessageSessionUserItem item1 = new MessageSessionUserItem();
        item1.setSessionId(messageSession.getSessionId());
        item1.setUserId(selfUserId);
        messageSessionMapper.addMessageSessionUser(item1);

        // 插入message_session_user插入属性,插入会话中的对方
        MessageSessionUserItem item2 = new MessageSessionUserItem();
        item2.setSessionId(messageSession.getSessionId());
        item2.setUserId(toUserId);
        messageSessionMapper.addMessageSessionUser(item2);

        messageSessionUserItemResponse.setSessionId(messageSession.getSessionId());

        return messageSessionUserItemResponse;
    }

    public List<Friend> getFriendsBySessionId(Integer sessionId, Integer selfUserId) {
        return messageSessionMapper.getFriendsBySessionId(sessionId, selfUserId);
    }

}
